package rifa.controller;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import Utils.Criptografia;
import rifa.entidade.Cidade;
import rifa.entidade.Endereco;
import rifa.entidade.Estado;
import rifa.entidade.Usuario;
import rifa.persistence.facade.EnderecoFacade;
import rifa.persistence.facade.UsuarioFacade;

@ManagedBean(name = "cadastroBean")
@ViewScoped
public class CadastroBean {

	private List<Estado> estados;
	private List<Cidade> cidades;
	private Estado estadoSelecionado;
	private Cidade cidadeSelecionada;

	private Usuario usuario = new Usuario();
	private Endereco endereco;
	private String senhaAux;

	public static final String DADOS_USUARIO_STATE = "dadosUsuario";
	public static final String CADASTRO_ENDERECO_STATE = "cadastroEndereco";
	private String currentState = DADOS_USUARIO_STATE;

	public void changeState() {
		setCurrentState(CADASTRO_ENDERECO_STATE);
	}

	public void completeCidades() {
		EnderecoFacade facade = new EnderecoFacade();
		cidades = facade.getCidades(estadoSelecionado);

	}

	public void cadastra() throws Exception {
		
		this.endereco.setCidade(cidadeSelecionada);
		this.endereco.setEstado(estadoSelecionado);
		usuario.setEndereco(endereco);
		usuario.setSenha(Criptografia.criptografarString(usuario.getSenha()));
		UsuarioFacade facade = new UsuarioFacade();
		facade.insereObjeto(usuario);

	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public Endereco getEndereco() {
		if (this.endereco == null)
			this.endereco = new Endereco();
		return endereco;
	}

	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}

	public String getSenhaAux() {
		return senhaAux;
	}

	public void setSenhaAux(String senhaAux) {
		this.senhaAux = senhaAux;
	}

	public List<Estado> getEstados() {
		if (estados == null) {
			EnderecoFacade facade = new EnderecoFacade();
			estados = facade.getEstados();
		}
		return estados;
	}

	public void setEstados(List<Estado> estados) {
		this.estados = estados;
	}

	public List<Cidade> getCidades() {
		return cidades;
	}

	public void setCidades(List<Cidade> cidades) {
		this.cidades = cidades;
	}

	public Estado getEstadoSelecionado() {
		return estadoSelecionado;
	}

	public void setEstadoSelecionado(Estado estadoSelecionado) {
		this.estadoSelecionado = estadoSelecionado;
	}

	public Cidade getCidadeSelecionada() {
		return cidadeSelecionada;
	}

	public void setCidadeSelecionada(Cidade cidadeSelecionada) {
		this.cidadeSelecionada = cidadeSelecionada;
	}

	public String getCurrentState() {
		return currentState;
	}

	public void setCurrentState(String currentState) {
		this.currentState = currentState;
	}

	public boolean isStateUsuario() {
		String state = this.getCurrentState();
		return (state == null || DADOS_USUARIO_STATE.equals(state));
	}

	public boolean isStateEndereco() {
		String state = this.getCurrentState();
		return (state == null || CADASTRO_ENDERECO_STATE.equals(state));
	}

}
